package com.kanq.ocr.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.ArrayList;
import java.util.List;

/**
 * @author wangchong
 */
@Data
@ConfigurationProperties(prefix = "kanq.ocr")
public class OcrAiProperties {
	/**
	 * RapidOCR模型路径
	 */
	private String modelPath = "models";

	/**
	 * PDF文档最大处理页数
	 */
	private int maxPdfPages = 10;

	/**
	 * AI模型配置
	 */
	private AiConfig ai = new AiConfig();

	/**
	 * OCR配置
	 */
	private OcrConfig ocr = new OcrConfig();

	@Data
	public static class AiConfig {
		/**
		 * Ollama服务基础URL
		 */
		private String baseUrl = "http://localhost:11434";

		/**
		 * 模型名称
		 */
		private String model = "llama2";

		/**
		 * 温度参数，控制输出的随机性（0.0-1.0）
		 */
		private float temperature = 0.7f;

		/**
		 * API密钥
		 */
		private String apiKey = "";
	}

	@Data
	public static class OcrConfig {
		/**
		 * 识别阈值
		 */
		private float threshold = 0.5f;

		/**
		 * 是否启用GPU
		 */
		private boolean useGpu = false;

		/**
		 * 线程数
		 */
		private int numThread = 4;
	}

	
	/**
	 * 关键信息提取配置
	 */
	private KeywordConfig keywords = new KeywordConfig();

	@Data
	public static class KeywordConfig {
		/**
		 * 需要提取的关键字段列表
		 * 示例：["甲方", "乙方", "合同金额", "签订日期"]
		 */
		private List<String> contractFields = new ArrayList<>();
	}
}